Skip to main content

第 10 课:谷歌 Inception 网络

构建卷积层时,你要决定过滤器的大小究竟是1×1、3×3 或是 5×5,或者要不要添加池化层。
而 Inception网络的作用就是代替你来决定,虽然网络架构因此变得更加复杂,但网络表现却非常好

单个Inception的原理如下:
输入为 28×28×192,输出为 28×28×256

这里使用的都是same卷积

然而我们计算发现,光是 5 * 5 卷积就要进行 (5 * 5 * 192)*(28 * 28 * 32)= 1.2 亿次乘法运算
这种计算成本太高了,所以需要使用 1 * 1 卷积来压缩通道数

因此有时中间这层被称为瓶颈层,这使得前后加起来的总计算次数约为 1204万,几乎下降到了十分之一
你可能会问,仅仅大幅缩小表示层规模会不会影响神经网络的性能?
事实证明,只要合理构建瓶颈层,你既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算。

同理对其他层也进行优化,最后的单个模块如下

注意:
关于最后一个池化,我们使用same padding之后,输出将会是 28×28×192, 通道数太多,
所以在加上一个 1 * 1 的池化层, 使其缩小到 28×28×32

把很多Inception 模块连接起来,就是Inception 网络

我们可以发现,这里其实还有一些分支,这些分支有什么用呢?
在网络的最后几层,通常称为全连接层,在它之后是一个Softmax层来做分类
这些分支所做的就是通过隐藏层来做出预测,用来确保即使是隐藏单元和中间层也参与了特征计算,即可以进行图片分类

这个Inception网络是由 Google公司的作者所研发的,它被叫做 GoogleLeNet,这个名字是为了向 LeNet网络致敬。